package io.github.echarts.model.theme;

import io.github.echarts.option.style.LineStyle;
import io.github.echarts.option.style.TextStyle;

/**
 * 主题接口
 * <p>
 * 定义了图表主题的核心功能，包括提供配色方案、文本样式、线条样式等。
 * 主题用于统一图表的视觉风格，使图表保持一致的外观。
 * </p>
 */
public interface Theme {
    
    /**
     * 获取主题名称
     * 
     * @return 主题名称
     */
    String getName();
    
    /**
     * 获取配色方案
     * 
     * @return 配色方案
     */
    ColorScheme getColorScheme();
    
    /**
     * 获取特定类型组件的主题配置
     * 
     * @param <T> 组件主题配置类型
     * @param componentType 组件类型（如"title"、"legend"、"xAxis"等）
     * @return 组件主题配置
     */
    <T> T getComponentTheme(String componentType);
    
    /**
     * 获取默认文本样式
     * 
     * @return 文本样式
     */
    TextStyle getTextStyle();
    
    /**
     * 获取默认线条样式
     * 
     * @return 线条样式
     */
    LineStyle getLineStyle();
    
    /**
     * 获取背景颜色
     * 
     * @return 背景颜色
     */
    String getBackgroundColor();
    
    /**
     * 获取轴线颜色
     * 
     * @return 轴线颜色
     */
    String getAxisLineColor();
    
    /**
     * 获取分隔线颜色
     * 
     * @return 分隔线颜色
     */
    String getSplitLineColor();
    
    /**
     * 获取特定索引的系列颜色
     * 
     * @param index 系列索引
     * @return 颜色值
     */
    String getSeriesColor(int index);
} 